let express = require('express')
let randomstring = require('randomstring')
let bcrypt = require("../../utils/bcrypt")
let fs = require('fs')
let path = require('path')
let router = express.Router()
router.post('/', (req, res) => {
    // 处理注册业务

    // 生成随即昵称
    let nike_name = randomstring.generate(6);
    let { username, password, nikename = nike_name, icon = 'upload/default.jpg' } = req.body
    console.log(username, password, nikename, icon)
    let time = Date.now();
    if (req.files && req.files.length > 0) {
        fs.renameSync(req.files[0].path, req.files[0].path + path.parse(req.files[0].originalname).ext);
        icon = 'upload/user/' + req.files[0].filename + path.parse(req.files[0].originalname).ext
    }
    if (!username || !password) {
        res.send({ err: 1, msg: '用户名或密码为必传参数' })
        // 失败，删掉传上来的头像，但不能删除默认头像
        if (icon.indexOf('default') === -1) {
            fs.unlinkSync('public/' + icon)
        }
        return
    }
    req.mgdb.open({ collectionName: 'user' }).then(({ collection, client }) => {
        // 查看用户名是否重复
        collection.find({ username }).toArray((err, result) => {
            if (err) {
                res.send({ err: 1, msg: '查询操作失败' })
                // 失败，删掉传上来的头像，但不能删除默认头像
                if (icon.indexOf('default') === -1) {
                    fs.unlinkSync('public/' + icon)
                }
            } else {
                if (result.length > 0) {
                    // 用户名有重复
                    res.send({ err: 1, msg: '用户名重复' })
                    // 失败，删掉传上来的头像，但不能删除默认头像
                    if (icon.indexOf('default') === -1) {
                        fs.unlinkSync('public/' + icon)
                    }
                } else {
                    // 用户名无重复，将用户数据写入数据库，返回数据
                    password = bcrypt.hashSync(password)
                    collection.insertOne({ username, password, nikename, icon, time }, (err, result) => {
                        if (err) {
                            // 插入失败
                            res.send({ err: 1, msg: '插入操作失败，注册失败' })
                            // 失败，删掉传上来的头像，但不能删除默认头像
                            if (icon.indexOf('default') === -1) {
                                fs.unlinkSync('public/' + icon)
                            }
                        } else {
                            // 插入成功
                            let data = result.ops[0]
                            delete data.username
                            delete data.password
                            res.send({ err: 0, msg: '注册成功', data })
                        }
                        client.close()
                    })
                }
            }
        })
    }).catch(
        e => res.send(e)
    )
})
module.exports = router;